// 创建&使用共享内存
#include <iostream>
#include <string.h>
#include "ShareMemory.hpp"
#include "Time.hpp"
#include"Fifo.hpp"



int main()
{
	// 先创建共享内存
	shm.CreatShm();
	shm.AttachShm();

	shm.ShmMeta(); // 获取共享内存信息

	//在创建管道
	gpipe.OpenPipeForRead();


	// 在这里进行IPC
	struct data *image = (struct data *)shm.GetAddr();
	while(1)
	{
		gpipe.Wait();
		printf("status:%s\n",image->status);
		printf("lasttime:%s\n",image->lasttime);
		printf("image:%s\n",image->image);

		strcpy(image->status,"过期");
	}

	// char* strinfo = (char*)shm.GetAddr();
	// while(1)
	// {
	// 	printf("%s\n",strinfo);
	// 	sleep(1);
	// }

	shm.DetachShm();
	shm.DeleteShm();

	return 0;
}












// int main()
// {
// 	// 1.创建日志
// 	key_t k = ::ftok(gpath.c_str(), gprojId);
// 	if (k < 0)
// 	{
// 		std::cerr << "ftok error" << std::endl;
// 		return 1;
// 	}
// 	std::cout << "k: " << ToHex(k) << std::endl;

// 	// 2.创建共享内存&&获取
// 	// 共享内存也有权限
// 	int shmid = ::shmget(k,gshmsize,IPC_CREAT | IPC_EXCL | gmode);
// 	if(shmid < 0)
// 	{
// 		std::cerr << "shmget error" << std::endl;
// 		return 2;
// 	}
// 	std::cout << "shmid: " << shmid << std::endl;

// 	// 3.将共享内存挂接到自己的地址空间中
// 	void* ret = shmat(shmid,nullptr,0);//失败返回-1，为什么会失败？没有设置权限
// 	std::cout << "attach done: " << (long long) ret << std::endl;

// 	::shmdt(ret);
// 	std::cout << "detach done: " << std::endl;

// 	// 3.删除共享内存
// 	shmctl(shmid,IPC_RMID,nullptr);
// 	std::cout << "delete shm done: " << std::endl;

// 	return 0;
// }